#ifndef _COMPILATOR_H_
#define _COMPILATOR_H_

#include "Hash.h"
#include "Lexico.h"
#include "Sintatico.h"
#include "Semantico.h"
#include "Arvore.h"
#include "Gerador.h"

#include <iostream>
#include <fstream>

class Compilador
{
	public:

		Compilador();
		~Compilador();

		bool executarLexico(char *rFile);
		bool executarSintatico();
		bool executarSemantico(NoArvore *pNoErro);
                void gerarCodigo();

		void exibirLexico();
		void exibirSintatico();
		void exibirSemantico();
		
		void exibirArvoreSemantica();

	private:

	    Arvore    mArvore;
		Lexico 	  mLexico;
		Sintatico mSintatico;
		Semantico mSemantico;
                Hash      mTabelaSimbolos;
                Gerador   mGerador;
};

#endif //_COMPILATOR_H_
